/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import DTO.PhieuDichVu_DTO;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 *
 * @author PEKEM
 */
public class PhieuDichVu_DAO {

    private static String sqlString;
    private static MSSQLConnect cn;
    private static ResultSet rs;

    public static ArrayList<PhieuDichVu_DTO> layDanhSachMaPhieuDichVu() throws Exception {
        ArrayList<PhieuDichVu_DTO> danhSachMaPhieuDichVu = new ArrayList<>();
        sqlString = "SELECT MaDichVu FROM DICHVU";
        try {
            cn = new MSSQLConnect();
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                PhieuDichVu_DTO pdv = new PhieuDichVu_DTO();
                pdv.setMaPhieuDichVu(rs.getString("MaPhieuDichVu"));
                danhSachMaPhieuDichVu.add(pdv);
            }
        } catch (Exception e) {
            throw new Exception("Không thể lấy danh sách mã dịch vụ");
        } finally {
            cn.Close();
        }
        return danhSachMaPhieuDichVu;
    }

    public static int Insert(PhieuDichVu_DTO pdv) throws Exception {
        int n = 0;
        sqlString = "INSERT INTO PHIEUDICHVU(MaPhieuDichVu, MaKhach, NgayDat, TriGia) VALUES ('"
                + pdv.getMaPhieuDichVu() + "','"
                + pdv.getMaKhach() + "','"
                + pdv.getNgayDat() + "','"
                + pdv.getTriGia() + "')";
        try {
            cn = new MSSQLConnect();
            n = cn.executeUpdate(sqlString);
        } catch (Exception e) {
            //System.out.println(e.toString());
            throw new Exception("Lỗi cơ sở dữ liệu");
        } finally {
            cn.Close();
        }
        return n;
    }

    public static int Delete(String maPhieuDichVu) throws Exception {
        int n;
        sqlString = "DELETE FROM PHIEUDICHVU WHERE MaPhieuDichVu='" + maPhieuDichVu + "'";
        try {
            cn = new MSSQLConnect();
            //Thực thi câu lệnh SQL
            n = cn.executeUpdate(sqlString);

        } catch (Exception e) {
            throw new Exception("Lỗi Kết Nối Cơ sở dữ liệu.");
        } finally {
            cn.Close();
        }
        return n;
    }
    //cập nhật phòng

    public static int Update(PhieuDichVu_DTO pdv) throws Exception {
        int n;
        sqlString = "UPDATE PHIEUDICHVU SET MaKhach='" + pdv.getMaKhach()
                + "',NgayDat'" + pdv.getNgayDat()
                + "',TriGia'" + pdv.getTriGia()
                + "' WHERE MaPhieuDichVu='" + pdv.getMaPhieuDichVu() + "'";
        try {
            cn = new MSSQLConnect();
            //Thực thi câu lệnh SQL
            n = cn.executeUpdate(sqlString);

        } catch (Exception e) {
            throw new Exception("Lỗi Kết Nối Cơ sở dữ liệu.");
        } finally {
            cn.Close();
        }
        return n;
    }

    public static String taoMaTuDong(String maGoc, int batDau) throws Exception {
        String str, kq;
        int so;
        try {
            str = maGoc.substring(batDau);
            kq = maGoc.substring(0, batDau);
            so = Integer.parseInt(str) + 1;
            for (int i = 0; i < str.length() - Integer.valueOf(so).toString().length(); i++) {
                kq += "0";
                //return kq;
            }
            kq = kq + so;
        } catch (Exception x) {
            return null;
        }
        return kq;
    }

    public static String layMaCuoiCung() throws Exception {
        String kq;
        kq = null;
        sqlString = "SELECT TOP 1 MaPhieuDichVu as [Mã Phiếu Dịch Vụ] FROM PHIEUDICHVU ORDER BY MaPhieuDichVu DESC";
        try {
            //thực hiện câu truy vấn
            cn = new MSSQLConnect();
            //thực hiện câu truy vấn
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                kq = rs.getString("Mã Phiếu Dịch Vụ");
            }

        } catch (Exception e) {
            throw new Exception("Không thể lấy mã max");
        } finally {
            cn.Close();
        }
        return kq;
    }
     public static Float layTriGiaTheoMaKhach(String maKhach) throws Exception{
         Float trigia = 0f;
        sqlString = "SELECT SUM(TriGia) as [TG] FROM PhieuDichVu where MaKhach= '"+maKhach+"'";
                
        try {
            cn = new MSSQLConnect();
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                trigia = rs.getFloat("TG");
            }
        } catch (Exception e) {
            throw new Exception("Không thể lấy trị giá phiếu dịch vụ");

        } finally {
            cn.Close();
        }
        return trigia;
    }
}
